﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using WindowsFormsApplication1.Forms;
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        frmParam frm= new frmParam();
        String nombreArchivo="";
        public Form1()
        {
            
            InitializeComponent();
            configuracionInicial();
        }

        private void toolStripNuevo_Click(object sender, EventArgs e)
        {
            txtEditor.Enabled = true;
            txtEditor.Text = "";
            txtConsola.Text = "";
            
            
            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                nombreArchivo = saveFileDialog1.FileName;
                using (StreamWriter f = new StreamWriter(new FileStream(nombreArchivo, FileMode.Create)))
                {
                    lblCaption.Text = nombreArchivo;
                    f.Write(txtEditor.Text);
                    f.Close();
                }
                
            }

        }

        private void configuracionInicial()
        {
            txtEditor.Enabled = false;
        }

        private void toolStripAbrir_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                
                ArrayList lineas = new ArrayList();
                String filename = openFileDialog1.FileName;
                StreamReader f = new StreamReader(new FileStream(filename, FileMode.Open));

                String linea;

                while ((linea = f.ReadLine()) != null)
                {
                    lineas.Add(linea);
                }

                f.Close();
                String texto = "";
                foreach (String l in lineas)
                {
                    texto = texto + l + "\r\n";

                }
                txtEditor.Enabled = true;
                txtEditor.Text = texto;
                lblCaption.Text = filename;
                nombreArchivo = filename;
            }



        }

        private void toolStripGuardar_Click(object sender, EventArgs e)
        {
            if (!nombreArchivo.Equals(""))
            {
                using (StreamWriter f = new StreamWriter(new FileStream(nombreArchivo, FileMode.Create)))
                {
                    f.Write(txtEditor.Text);
                }
            }
            else 
            {
                if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    nombreArchivo = saveFileDialog1.FileName;
                    using (StreamWriter f = new StreamWriter(new FileStream(nombreArchivo, FileMode.Create)))
                    {
                        lblCaption.Text = nombreArchivo;
                        f.Write(txtEditor.Text);
                    }
                }
            
            }
        }

        private void toolStripCopiar_Click(object sender, EventArgs e)
        {
            if (txtEditor.SelectionLength > 0)
            {
                txtEditor.Copy();
            }
            else
            {
                MessageBox.Show("Seleccione el texto a copiar", 
                        "Important Note", MessageBoxButtons.OK,
		                MessageBoxIcon.Exclamation,
		                MessageBoxDefaultButton.Button1);
            }
        }

        private void toolStripPegar_Click(object sender, EventArgs e)
        {
            if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) == true)
            {
                txtEditor.Paste();
                Clipboard.Clear();
            }
        }

        private void parametrosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //cerrando ventana
            if (frm.Visible == true)
            {
                frm.Close();
                
            }
            //Asignando ventana frmParam como hija de frmMain(MDI)
            frm = new frmParam();
            frm.MdiParent = this;

            //Posicion de la ventana de parametros
            panel3.Location = new Point(
            (panel3.Location.X + panel3.Width / 2) - (panel3.Width / 2), 
            (panel3.Location.Y + panel3.Height / 2) - (panel3.Height / 2));
            frm.StartPosition = FormStartPosition.Manual;
            frm.Show();
            this.panel3.Controls.Add(frm);

            
        }



        private void copiarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStripCopiar_Click(sender, e);
        }

        private void pegarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStripPegar_Click(sender, e);
        }

        private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStripAbrir_Click(sender, e);
        }

        private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStripNuevo_Click(sender, e);
        }

        private void cerrarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            toolStripGuardar_Click(sender, e);
        }

        private void cerrarToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Esta seguro que desea salir?", "Warning", 
                MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1) == DialogResult.OK){            
                            this.Close();
                        }
        }

        private void toolStripEjecutar_Click(object sender, EventArgs e)
        {
            if (!nombreArchivo.Equals(""))
            {
                if (txtEditor.Text.Equals(""))
                {
                    MessageBox.Show("El Editor se encuentra vacio, agregue el texto que sera analizado!", "Important Note", 
                        MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                }
                else
                {
                    //guarda el contenido en txtContenido en el archivo nuevo que se creo
                    toolStripGuardar_Click(sender, e);
                    
                    //CAMBIAR RUTA RELATIVA A LA HORA DE ARMAR EL PAQUETE 
                    //String rutaExe = "..\\..\\..\\Debug\\Scanner.exe";

                    //Ruta que se ocupara para la presentacion del proyecto
                    String rutaExe = "scanner\\objeto\\Scanner.exe";
                    System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + rutaExe + " " + nombreArchivo + " " + frm.getMaxLinea() + " " +frm.getMaxDigit()+" "+frm.getMaxId());
                    procStartInfo.RedirectStandardOutput = true;
                    procStartInfo.UseShellExecute = false;
                    procStartInfo.CreateNoWindow = true;
                    System.Diagnostics.Process proc = new System.Diagnostics.Process();
                    proc.StartInfo = procStartInfo;
                    proc.Start();
                    string result = proc.StandardOutput.ReadToEnd();

                    txtConsola.Text = result;
                    //txtConsola.Text = nombreArchivo;
                }
            }
            else
            {
                MessageBox.Show("Debe crear un nuevo archivo!", "Important Note", 
                    MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
            }

        }

        private void ayudaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            //Process.Start("..\\..\\..\\Ayuda.pdf");
            Process.Start("Ayuda.pdf");
        }

    }
}
